// 根据link进行跳转
export async function toLink(val){
	if(val === '' || !val) { //如果协议为空则不进行操作
		return;
	}
	console.log(val,'val')
	if (val.includes('@@')) {
		val = val.replaceAll("@@@","=")
		val = val.replaceAll("@@","?")
	}
	console.log(val,'val')

	let mode = 'navigateTo',page,tag

	// 引入 url-parse
	const Url = require('url-parse');
	// 创建一个 URL 对象
	const myURL = new Url(val);
	let queryParams = parseQueryParams(myURL.query);

	if(!myURL.protocol || myURL.protocol === '') return	//协议头为空

	//解析link
	if(myURL.protocol==='tuiwa:'){	//内部协议
		if(myURL.hostname === '' || !myURL.hostname) return //tag为空不进行操作
		if(queryParams.page === '' || !queryParams.page) return //page为空不进行操作
		if(queryParams.mode && queryParams.mode !== '') mode = queryParams.mode
		tag = myURL.hostname

		page = queryParams.page
		if(tag === this.$tag) page = '/'+page //判断是否是该小程序页面，如果是page前加'/'
		let link = queryParams.link;
		if (link) {
			link = link.replaceAll("?","@@")
			link = link.replaceAll("=","@@@")
			if (page.includes('?')) {
				page = page + '&link=' + link
			} else {
				page = page + '?link=' + link
			}
		}
	}
	else{	//外部协议
		tag = this.$tag
		page = '/pages/outside/outside?src=' + val
	}

	//进行跳转
	if(tag === this.$tag){
		if(mode ==='navigateTo'){
			uni.navigateTo({
				url:page
			})
		}else if(mode ==='redirectTo'){
			uni.redirectTo({
				url:page
			})
		}else if(mode ==='reLaunch'){
			uni.reLaunch({
				url:page
			})
		}else if(mode ==='switchTab'){
			uni.switchTab({
				url:page
			})
		}
	}else{
		let otherAppId
		await this.$httpapi('getAppByTag','POST',{tag}).then(res=>otherAppId = res.appId)
		uni.navigateToMiniProgram({
			appId: otherAppId, //目标小程序appid
			path: page, //需要打开的目标路径
			extraData: {},
			envVersion: 'trial', //小程序版本：develop（开发版），trial（体验版），release（正式版）
			success(res) {
				// 打开成功
			}
		})
	}
}


// 解析查询参数字符串为对象的辅助函数
function  parseQueryParams(queryString) {
	const params = JSON.parse(queryString.substring(1));// 去掉前导的 '?' 字符后解析成对象
	return params;
}
